package com.py.framework.core.common;

/**
 * 分页插件类
 * @author Leegern
 * @date   2018年4月28日
 */
public class Pagination {
	/** 每页显示的条数 **/
	private int pageSize;
	/** 总共的条数 **/
	private int recordCount; 
	/** 当前页面 **/
	private int currentPage;

	/**
	 * 自定义构造器
	 * @param pageSize    每页显示条数
	 * @param recordCount 总共条数
	 * @param currentPage 当前页面
	 */
	public Pagination(int pageSize, int recordCount, int currentPage) {
		this.pageSize = pageSize;
		this.recordCount = recordCount;
		setCurrentPage(currentPage);
	}

	/**
	 * 自定义构造器
	 * @param pageSize    每页显示条数
	 * @param recordCount 总共条数
	 */
	public Pagination(int pageSize, int recordCount) {
		this(pageSize, recordCount, 1);
	}
	
	/**
	 * 默认构造器
	 */
	public Pagination() {
		
	}
	
	/**
	 * 总页数
	 * @return
	 */
	public int getPageCount() {
		int size = recordCount / pageSize; // 总条数/每页显示的条数=总页数
		int mod = recordCount % pageSize;  // 最后一页的条数
		if (mod != 0)
			size++;
		return recordCount == 0 ? 1 : size;
	}

	/**
	 * 包含, 起始索引为0
	 * @return
	 */
	public int getFromIndex() {
		return (currentPage - 1) * pageSize;
	}

	/**
	 * 不包含, 截止索引.
	 * @return
	 */
	public int getToIndex() {
		return Math.min(recordCount, currentPage * pageSize);
	}

	/**
	 * 得到当前页
	 * @return
	 */
	public int getCurrentPage() {
		return currentPage;
	}
	
	/**
	 * 设置当前页
	 * @param currentPage 页数
	 */
	public void setCurrentPage(int currentPage) {
		int validPage = currentPage <= 0 ? 1 : currentPage;
		validPage = validPage > getPageCount() ? getPageCount() : validPage;
		this.currentPage = validPage;
	}
	
	/**
	 * 得到每页显示条数
	 * @return
	 */
	public int getPageSize() {
		return pageSize;
	}
	
	/**
	 * 设置每页显示的条数
	 * @param pageSize 每页大小
	 */
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	
	/**
	 * 得到总共的条数
	 * @return
	 */
	public int getRecordCount() {
		return recordCount;
	}
	
	/**
	 * 设置总共的条数
	 * @param recordCount
	 */
	public void setRecordCount(int recordCount) {
		this.recordCount = recordCount;
	}
}